#ifndef __SDATA_H
#define __SDATA_H


#define DIAOXIAN -1 //掉线
#define BLACKWIN 1 //黑棋赢
#define WHITEWIN 2 //白棋赢
#define TUICHU 33 //退出
#define HUIQI 44//悔棋
#define GAMEREQ 55 //对战申请
#define NONEHOUSE 56 //没有房间


/************************************
 * 函数名称：Send_Qipan
 * 
 * 函数功能：将整个棋盘棋子（白棋 2,黑棋 1）所在的坐标发送给客户端
 *          格式：{int[15][15]:%d,flag=0,1,2} 
 *          flag=0:正在进行 flag=1 黑棋赢 flag=2 白棋赢
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 *          @pbuf:一个棋盘二维数组pbuf[15][15]
 *          @flag:获取判断输赢 0表示胜负未定、1表示黑棋赢、2表示白棋赢
 * 
 * 返回值：None
 * 
 * 注意事项：None
 * 
 ************************************/
void Send_Qipan(int clientsockfd,int *pbuf,int flag);

/************************************
 * 函数名称：Guan_Zhan
 * 
 * 函数功能：发送所有正在对战的房间总数给客户端
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 *          @sumid:所有正在对战的房间总数
 * 返回值：房间号为0 返回 NONEHOUSE,还没进入观战退回 返回 TUICHU
 *        
 * 注意事项：sumid既表示房间总数，
 *          退出该函数时会客户端点击的房间号赋给sumid
 * 
 ************************************/
int Guan_Zhan(int clientsockfd,int *sumid);

/************************************
 * 函数名称：DataPack
 * 
 * 函数功能：给一个坐标打包成"[x,y,flag=%d]"格式
 * 
 * 函数参数：@buf_x:原始数据包
 *          @buf:返回客户端传给服务端的坐标
 * 
 * 返回值：None
 * 
 * 注意事项：退出函数时坐标会赋给buf
 * 
 ************************************/
void DataPack(char *buf_x,char *buf);

/************************************
 * 函数名称：CorDataSolve
 * 
 * 函数功能：坐标数据处理
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 *          @buf:把坐标和标志打包 格式：[x,y,flag=%d]
 * 
 * 返回值：-1掉线 
 * 
 * 注意事项：打包的坐标数据会传给指针buf
 * 
 ************************************/
int CorDataSolve(int clientsockfd,char *buf);

/************************************
 * 函数名称：Quit_Back
 * 
 * 函数功能：退出、返回、悔棋数据收发协议
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 * 
 * 返回值：-1掉线 1黑棋赢 2白棋赢 TUICHU退出 HUIQI悔棋 
 * 
 * 注意事项：None
 * 
 ************************************/
int Quit_Back(int clientsockfd);

/************************************
 * 函数名称：Fight_WatchDataSolve
 * 
 * 函数功能：退出、返回、悔棋数据收发协议
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 * 
 * 返回值：-1掉线 GAMEREQ游戏请求  NONEHOUSE无房间 TUICHU退出
 * 
 * 注意事项：sumid既表示房间总数，
 *          退出该函数时会客户端点击的房间号赋给sumid
 * 
 ************************************/
int Fight_WatchDataSolve(int clientsockfd,int *sumid);

/************************************
 * 函数名称：Tell_Gec_BaiQi
 * 
 * 函数功能：告诉客场为白棋
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 * 
 * 返回值：None
 * 
 * 注意事项：None
 * 
 ************************************/
void Tell_Gec_BaiQi(int clientsockfd);


/************************************
 * 函数名称：Tell_Gec_BaiQi
 * 
 * 函数功能：告诉主场为黑棋
 * 
 * 函数参数：@clientsockfd:与客户端收发数据的套接字文件描述符
 * 
 * 返回值：None
 * 
 * 注意事项：None
 * 
 ************************************/
void Tell_Host_HeiQi(int clientsockfd);



#endif